/*
  封装axios
  万一以后axios不再维护同时也不必要在各个组件中修改请求的工具
    1. 设置公共的请求地址前缀
    2. 请求拦截器：添加公共参数
    3. 响应拦截器:
      成功：返回成功的Promise，值为成功的数据
      失败：返回失败的Promise，值为失败的原因
*/
// 引入axios
import axios from 'axios'
// 引入进度条
import Nprogress from 'nprogress'
// 引入进度条样式
import '@/assets/nprogress.css'
// 引入elementUI的message
// import {Message} from 'element-ui'
// 创建实例
const instance = axios.create({
    baseURL: '/api',   // 代理服务器地址,
    timeout: 10000,  // 设置请求超时时间
})
// 请求拦截器
instance.interceptors.request.use(req => {
    // 开启进度条
    Nprogress.start()
    return req
}, err => {
    // 关闭进度条
    Nprogress.done()
    const message = err.message || "请求超时";
    return Promise.reject(message)
})

// 响应拦截器
instance.interceptors.response.use(res => {
    // 开启进度条
    Nprogress.done()
    // 把响应参数传递进去 实参
    return res.data
}, error => {
    // 关闭进度条
    Nprogress.done()
    // 请求的时候出现的错误信息
    // 直接返回一个中断错误的信息
    // 外部可以处理也可以不处理错误信息
    return Promise.reject(error)
})

export default instance
